template <class _InputIter1, class _InputIter2>
inline bool equal(_InputIter1 __first1, _InputIter1 __last1,
                  _InputIter2 __first2) {
//   __STL_REQUIRES(_InputIter1, _InputIterator);
//   __STL_REQUIRES(_InputIter2, _InputIterator);
//   __STL_REQUIRES(typename iterator_traits<_InputIter1>::value_type,
//                  _EqualityComparable);
//   __STL_REQUIRES(typename iterator_traits<_InputIter2>::value_type,
//                  _EqualityComparable);
//   concept-check Not Implementation
  for ( ; __first1 != __last1; ++__first1, ++__first2)
    if (*__first1 != *__first2)
      return false;
  return true;
}

// 以"字典排列方式"对两个序列 [first, last) 进行比较
template <class _InputIter1, class _InputIter2>
bool lexicographical_compare(_InputIter1 __first1, _InputIter1 __last1,
                             _InputIter2 __first2, _InputIter2 __last2) {
//   __STL_REQUIRES(_InputIter1, _InputIterator);
//   __STL_REQUIRES(_InputIter2, _InputIterator);
//   __STL_REQUIRES(typename iterator_traits<_InputIter1>::value_type,
//                  _LessThanComparable);
//   __STL_REQUIRES(typename iterator_traits<_InputIter2>::value_type,
//                  _LessThanComparable);
//   concept-check Not Implementation
  for ( ; __first1 != __last1 && __first2 != __last2
        ; ++__first1, ++__first2) {
    if (*__first1 < *__first2)
      return true;
    if (*__first2 < *__first1)
      return false;
  }
  return __first1 == __last1 && __first2 != __last2;
}
